The present invention relates to rasterizing images into pixel arrays.
An image includes graphics objects, also called primitives, that describe visual elements of the image. When the image is rasterized into a pixel array corresponding to a page or a screen, the graphics objects are rendered into pixels from the pixel array such that pixel values, typically representing colors, are specified for the pixels.
For rasterization, a large image is typically divided into multiple disjoint bands whose size depends on memory and system restrictions. During rasterization, each band of the image can be assigned to a processor thread. The processor thread is a coherent sequence of processing steps that can be performed by a single processor. To rasterize the assigned band, a processor thread may access additional resources, such as display lists or font data.
The image can be rasterized sequentially or in parallel. In a system having a single processor, typically a single processor thread rasterizes all bands of the image sequentially, i.e., one band after the other. In a system having multiple processors, typically bands of the image are rasterized in parallel, i.e., by concurrently running processor threads that rasterize disjoint bands.
Alternatively, the pixel array can be divided into disjoint regions, such as tiles, and different regions can be assigned to different processor threads that rasterize only the portion of the image that lies inside the assigned region. If the image covers multiple document pages, different pages can be assigned to different processor threads.
In an alternative technique, graphics objects of the image are arbitrarily assigned to processor threads for parallel rasterization. Each processor thread rasterizes its assigned graphics objects into a buffer array corresponding to the entire pixel array, and, in a final processing step, the rasterized graphics objects in the buffer arrays are composed into a single rasterized image.